const Router = require('koa-router');
const moment = require('moment');
// 路由
const router = new Router();
// 导入数据库
const db = require('../db/index');
const randomPerson = require('../utils/getRandomPerson.js')

// 获取所有男性用户(此处只能返回数字，否则数据就会有泄露的风险)
router.get('/users/male', async ctx => {
    const result = await db('users').where({ sex: 'male' });
    ctx.body = {
        code: 200,
        data: result.length
    };
})
// 获取所有女性用户
router.get('/users/female',async ctx => {
    const result = await db('users').where({ sex: 'female' });
    ctx.body = {
        code: 200,
        data: result.length
    };
})

// 添加用户
router.post('/users/add', async ctx => {
    // 获取请求体
    const { contact, sex, address } = ctx.request.body;
    const create_time = moment(Date.now()).format('YYYY-MM-DD HH:mm:ss');

    // 添加数据
    await db('users').insert({ create_time, contact, sex, address });
    ctx.body = {
        code: 200,
        msg: '添加成功'
    }
})


// 随机抽取一个用户(全国随机匹配)
router.get('/users/random', async ctx => {
    // 获取请求参数sex
    const sex = ctx.request.query.sex;
    const address = ctx.request.query.address || null;
    if (address) {
        const result = await randomPerson(sex, address);
        // 判断是否匹配到用户
        if (result) {
            ctx.body = {
                code: 200,
                data: result
            }
        } else {
            // 匹配不到用户, 随机匹配一个
            const res = await randomPerson(sex, null);
            ctx.body = {
                code: 200,
                data: res
            }
        }
    } else {
        const result = await randomPerson(sex, null);
        ctx.body = {
            code: 200,
            data: result
        }
    }
})

// 举报用户
router.post('/users/report', async ctx => {
    // 获取请求体
    const { id } = ctx.request.body;
    // 通过id更新用户
    await db('users').update({ isreport: 0 }).where({ id });
    ctx.body = {
        code: 200,
        data: "举报成功"
    }
})

// 获取所有被举报的用户
router.get('/users/report', async ctx => {
    const result = await db('users').where({ isreport: 0 });
    ctx.body = {
        code: 200,
        data: result
    }
})

// 删除被举报的用户
router.post('/users/delete', async ctx => {
    // 获取请求体
    const { id } = ctx.request.body;
    // 通过id删除用户
    await db('users').delete().where({ id });
    ctx.body = {
        code: 200,
        data: "删除成功"
    }
})

// 拒绝通过的请求
router.post('/users/refuse', async ctx => {
    // 获取请求体
    const { id } = ctx.request.body;
    // 通过id更新用户
    await db('users').update({ isreport: 1 }).where({ id });
    ctx.body = {
        code: 200,
        data: "拒绝成功"
    }
})

// 管理员登录
router.post('/admin/login', async ctx => {
    // 获取请求体
    const { username, password } = ctx.request.body;
    // 判断用户名和密码是否正确
    if (username === 'admin' && password === '18790141291') {
        ctx.body = {
            code: 200,
            data: '登录成功'
        }
    } else {
        ctx.body = {
            code: 401,
            data: '用户名或密码错误'
        }
    }
})


module.exports = router;